home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / library / mfssrgrp.lha / usergroup / credential.h < prev    next >
C/C++ Source or Header  |  1992-09-02  |  3KB  |  114 lines

  1. /* $Id: credential.h,v 4.1 1994/05/16 14:09:07 ppessi Exp $
  2.  * 
  3.  * credential.h -- credential resource
  4.  *
  5.  * Author: ppessi <Pekka.Pessi@hut.fi>
  6.  *
  7.  * This file is part of the AmiTCP/IP usergroup.library.
  8.  *
  9.  * Copyright © 1993 AmiTCP/IP Group, <AmiTCP-Group@hut.fi>
  10.  *                  Helsinki University of Technology, Finland.
  11.  *
  12.  * Created      : Tue Jan 18 10:53:56 1994 ppessi
  13.  * Last modified: Mon May 16 12:52:00 1994 ppessi
  14.  *
  15.  */
  16.  
  17. #define CREDENTIALNAME "credential.resource"
  18. #define _PATH_CREDENTIAL "AmiTCP:libs/credential.resource"
  19.  
  20. #define UG_CredRes  0xCAED
  21.  
  22. /*
  23.  * Credentials
  24.  */
  25. struct ucred {
  26.   short   cr_ref;        /* reference count */
  27.   short   cr_ngroups;        /* number of groups */
  28.   uid_t   cr_uid;        /* effective user id */
  29.   gid_t   cr_groups[NGROUPS];    /* groups */
  30. };
  31.  
  32. #define cr_gid cr_groups[0]
  33.  
  34. /*
  35.  * Process owner
  36.  */
  37. struct    pcred {
  38.   struct ucred *pc_ucred;    /* current credentials */
  39.   uid_t            p_ruid;        /* real user id */
  40.   gid_t      p_rgid;        /* real group id */
  41.   short            p_refcnt;    /* number of references */
  42. };
  43.  
  44. #define p_ngroups pc_ucred->cr_ngroups
  45. #define p_groups  pc_ucred->cr_groups
  46. #define p_euid    pc_ucred->cr_uid
  47. #define p_egid    pc_ucred->cr_gid
  48.  
  49. /*
  50.  * Constant IDs
  51.  */
  52. #define ROOT_UID 0
  53. #define NOID    -1
  54. #define NOBODY  -2
  55.  
  56. #define ISROOT(p) ((p)->p_euid == ROOT_UID)
  57.  
  58. struct session {
  59.   pid_t           s_leader;
  60.   struct MsgPort *s_consoletask;
  61.   char            s_login[MAXLOGNAME];    /* setlogin() name */
  62. };
  63.  
  64. /*
  65.  * This have got some 4.4BSD proc fields
  66.  */
  67. struct proc {
  68.   struct session  p_session[1];
  69.   struct pcred    p_cred[1];
  70.   mode_t          p_umask;
  71. };
  72.  
  73. #define p_ucred   p_cred->pc_ucred
  74.  
  75. struct CredentialResource {
  76.   struct Library r_Lib;
  77.   struct proc    r_proc[1];    /* global "process" */
  78.   struct ucred   r_ucred[1];
  79.   struct lastlog r_lastlog[1];
  80.   struct utmp    r_utmp[1];
  81.   UBYTE          r_name[((sizeof(CREDENTIALNAME) +3) & ~3)];
  82.   UBYTE          r_vstring[1];
  83. };
  84.  
  85. struct CredentialResource *CredentialInit(const char *name);
  86.  
  87. extern struct CredentialResource *CredentialBase;
  88. struct proc *procfind(pid_t pid);
  89. struct ucred *crcopy(struct ucred *cred);
  90.  
  91. #ifdef notyet
  92. struct ucred *crget(void);
  93. void crfree(struct ucred *cr);
  94. struct proc *proccopy(struct proc *, pid_t new);
  95. #pragma libcall CredentialBase procfind  6 001
  96. #pragma libcall CredentialBase proccopy  C 0902
  97. #pragma libcall CredentialBase crcopy   12 901
  98. #pragma libcall CredentialBase crget    18 00
  99. #pragma libcall CredentialBase crfree   1E 901
  100. #endif
  101.  
  102. int suser(struct ucred *cred);
  103.  
  104. #define IsMinListEmpty(x) \
  105.     ( ((x)->mlh_TailPred) == (struct MinNode *)(x) )
  106.  
  107. /* These macros have typechecking */
  108. #define MinRemove(mn) do { struct MinNode *_mnp=(mn);Remove((struct Node*)_mnp); } while(0)
  109. #define MinAddHead(ml, mn) do { struct MinList *_mlp=(ml); struct MinNode *_mnp=(mn); AddHead((struct List*)_mlp, (struct Node*)_mnp); } while(0)
  110.  
  111. #define lock(x)     
  112. #define unlock(x)   
  113.  
  114.